import { message } from 'ant-design-vue'
import { wall } from '@/axios'

class TCaptcha{
  constructor() {
    this.result = null
  }
  getTCaptcha(callback){
    try {
      const captcha1 = new TencentCaptcha('2010898289', (ret)=>this.callback(ret,callback),  { needFeedBack: false })
      captcha1.show() // 显示验证码
    } catch (error) {
      this.loadErrorCallback()
    }
  }
  callback(res,slide){
    /* res（验证成功） = {ret: 0, ticket: "String", randstr: "String"}
       res（客户端出现异常错误 仍返回可用票据） = {ret: 0, ticket: "String", randstr: "String", errorCode: Number, errorMessage: "String"}
       res（用户主动关闭验证码）= {ret: 2}
    */
    if (res.ticket && res.randstr && res.ret === 0 && !res.errorCode){ // 滑动成功
      wall({
        Ticket: res.ticket,
        Randstr: res.randstr,
      }).then(data=>{
        typeof data === 'string' ? slide(JSON.parse(data)) : slide(data)
      }).catch(err=>{
        message.error('网络异常，请稍后重试')
      })
    }else if(res.ret !== 2){ // 当用户非手动关闭时验证码时触发
      message.error('验证码加载错误或超时，请稍后重试')
    }
  }
  // 验证码js加载错误处理
  loadErrorCallback(){
    let CaptchaAppId = ''
    // 生成票据或自行做其它处理
    let ticket = 'terror_1001_' + CaptchaAppId + Math.floor(new Date().getTime() / 1000)
    this.callback({
      ret: 0,
      randstr: '@'+ Math.random().toString(36).substr(2),
      ticket: ticket,
      errorCode: 1001,
      errorMessage: 'jsload_error',
    })
  }
}
export default TCaptcha
